构建Android AOSP内核

您所在的位置:网站首页 材质 纹理 贴图 构建Android AOSP内核

构建Android AOSP内核

2023-11-28 03:22| 来源: 网络整理| 查看: 265

         构建Android AOSP内核 引言

  本文档将主要详细介绍为 Android 设备构建自定义内核的流程。在该文档中我们将学会选择正确的源代码,构建内核,以及将结果嵌入到根据Android开源项目(AOSP)构建的系统映像中。当然我们也可以使用 Repo获取更多最新的内核源代码,并通过在源代码检出的根目录下运行build/build.sh来构建这些内核源代码,而无需更多配置。

由于我们这里主要说明的是通用内核,所以通过根目录下的build/build.sh来构建内核是不行的,通过这种方式构建的内核必须是特定平台的内核。通用内核是通用的可自定义内核,因此不会定义默认配置。

一.构建repo环境

  对于最新的内核,可以使用 repo 下载源代码、工具链和构建脚本。这里我们先简单说明下如何构建repo环境。其主要步骤如下:

新建一个存放下载脚本文件的目录:

mkdir ~/bin PATH=~/bin:$PATH

下载repo脚本文件

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo vi ~/bin/repo REPO_URL = 'https://gerrit.googlesource.com/git-repo' 改为 REPO_URL = 'https://gerrit-google.tuna.tsinghua.edu.cn/git-repo' 二.下载内核

由于国内的环境通常不能从谷歌官网下载,所以这里我们将会使用清华源来进行下载!

我想对于有过使用repo下载相关代码仓库的开发者来说,使用repo进行相关的操作应该是手到擒来了。这里我们看下下载Android最新通用内核的流程可以分为如下:

步骤一

mkdir android-kernel && cd android-kernel

步骤二

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo' epo init -u https://aosp.tuna.tsinghua.edu.cn/kernel/manifest -b BRANCH

步骤三

repo sync

这里我们重点看看如何查找对应的BRANCH名称,如下:

设备AOSP 树中的二进制文件路径Repo 分支Pixel 5 (redfin)Pixel 4a (5G) (bramble)device/google/redbull-kernelandroid-msm-redbull-4.19-android11-qpr2Pixel 4a (sunfish)device/google/sunfish-kernelandroid-msm-sunfish-4.14-android11-qpr2Pixel 4 (flame)Pixel 4 XL (coral)device/google/coral-kernelandroid-msm-coral-4.14-android11-qpr2Pixel 3a (sargo)Pixel 3a XL (bonito)device/google/bonito-kernelandroid-msm-bonito-4.9-android11-qpr2Pixel 3 (blueline)Pixel 3 XL (crosshatch)device/google/crosshatch-kernelandroid-msm-crosshatch-4.9-android11-qpr2Pixel 2 (walleye)Pixel 2 XL (taimen)device/google/wahoo-kernelandroid-msm-wahoo-4.4-android10-qpr3Pixel (sailfish)Pixel XL (marlin)device/google/marlin-kernelandroid-msm-marlin-3.18-pie-qpr2Hikey960device/linaro/hikey-kernelhikey-linaro-android-4.14hikey-linaro-android-4.19common-android12-5.4Beagle x15device/ti/beagle_x15-kernelomap-beagle-x15-android-4.14omap-beagle-x15-android-4.19Android 通用内核无common-android-4.4common-android-4.9common-android-4.14common-android-4.19common-android-4.19-stablecommon-android11-5.4common-android12-5.4common-android12-5.10common-android-mainline

注意:我们可以在一个 Repo 检出中切换不同的分支。通用内核清单(以及大多数其他清单)定义了要完全克隆(非浅克隆)的内核 git 代码库,这使您能够在这些分支之间快速切换。切换到不同的分支类似于初始化分支;-u 参数是可选的。例如,要从现有的 repo 检出切换到 common-android-mainline,请运行以下命令: $ repo init -b common-android-mainline && repo sync。

并且这里我们需要注意的是,这里我们要下载的是Android通用的内核二不是特定分支的内核!特定分支的内核通常是和特定的平台绑定在一起的!

三.Android版本通用内核分支的选择

  通过上面我们知道了如何下载Android特定分支的内核和通用内核,那么这里开发者肯定会有一个疑问就是加入问我要下载的是通用Android通用内核版本,那么我怎么为我的Android版本选择合适的内核分支呢。这里也有一张具体的表可以对应,如下:

Android平台版本适配通用内核版本Android 9 (2018)android-4.4-pandroid-4.9-pandroid-4.14-pAndroid 10 (2019)android-4.9-qandroid-4.14-qandroid-4.19-qAndroid 11 (2020)android-4.14-stableandroid-4.19-stableandroid11-5.4Android 12 (2021)android-4.19-stableandroid11-5.4android12-5.4android12-5.10

注意:上述的版本匹配只是Android建议并且有做过相关适配的,如果开发者一定要强制不按照这个匹配,当然也不是不可以!只要能力够,时间充足总是可以搞定的。

四.Android内核的构建

  Android最新版本的内核的构建分为特定分支和通用分支的构建,我们分别来介绍。

4.1 Android特定分支内核的构建

Android特定分支内核的构建就比较简单了,直接在repo完成后的内核根目录下执行如下命令即可:

build/build.sh

编译完成后的内核二进制文件、模块和相应的映像位于 out/BRANCH/dist 目录下。这里我们以android-msm-crosshatch-4.9-android11为例说明:

~/code/kernel$ export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo' ~/code/kernel$ repo init --depth 1 -u https://aosp.tuna.tsinghua.edu.cn/kernel/manifest -b android-msm-crosshatch-4.9-android11 ~/code/kernel$ repo sync -j20 ~/code/kernel$ ./build/build.sh ~/code/kernel$ ls out/android-msm-pixel-4.9/dist/ abi.prop heatmap.ko kernel-uapi-headers.tar.gz sdm845-v2.1.dtb snd-soc-cs35l36.ko snd-soc-wcd934x.ko System.map videobuf2-vmalloc.ko wcd-dsp-glink.ko dtbo.img Image.lz4 modules.load sdm845-v2.dtb snd-soc-sdm845.ko snd-soc-wcd9xxx.ko vendor_boot.modules.load vmlinux wlan.ko ftm5.ko kernel-headers.tar.gz pinctrl-wcd.ko sec_touch.ko snd-soc-sdm845-max98927.ko snd-soc-wcd-spi.ko videobuf2-memops.ko wcd-core.ko 4.2 Android通用内核分支的构建

Android通用分支的构建,需要根据实际的场景来进行相关的构建,但是通常遵循的规则如下:

ARCH= scripts/kconfig/merge_config.sh /_defconfig /android-base.config /android-base-.config /android-recommended.config export PATH=$PATH:/xxx/aosp/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin export ARCH=arm64 export CROSS_COMPILE=aarch64-linux-android- make -j16 写在最后

关于构建Android AOSP内核就到这里结束了,这个是一个偏向实战性质的东西。多动手就OK了。当然最好建议读者参见谷歌官方文档,如下:

手动构建内核 构建内核 Android 通用内核



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3